package com.optimatch.model.solver;

import com.optimatch.ui.model.beans.ListeEquipes;

public class Solution {
	
	private static Solution solution = new Solution();
	
	private static int nbBacktracks;
	
	public static int nbBreaks;
	
	public static double tempsRecherche;

	private static int[][] matchs;
	
	private static int[][] home;
	
	private static String[][] stringMatchs;
	
	private static String[][] stringHome;
	
	private static int nombreEquipes;
	
	private static int nombreMatchs;
	
	private static ListeEquipes listeEquipes;
	
	private Solution(){
		super();
	}

	public static int[] getAllMatchsParJournee(int journee){
		int[] matchesJournee = new int[nombreEquipes];
		for(int i = 0; i < nombreEquipes ; i++)
			matchesJournee[i] = (matchs[i][journee]);
		return matchesJournee;
	}
	public static int[] getAllMatchsParEquipe(int equipe){
		return matchs[equipe];
	}
	public static int[] getDomicileParJournee(int journee){
		int[] domicileJournee = new int[nombreEquipes];
		for(int i = 0; i < nombreEquipes ; i++)
			domicileJournee[i] = (home[i][journee]);
		return domicileJournee;
	}
	public static int[] getDomicileParEquipe(int equipe){
		return home[equipe];
	}
	public static String[] getAllMatchsParJourneeString(int journee){
		String[] matchesJourneeString = new String[nombreEquipes];
		for(int i = 0; i < nombreEquipes ; i++)
			matchesJourneeString[i] = (stringMatchs[i][journee]);
		return matchesJourneeString;
	}
	public static String[] getAllMatchsParEquipeString(int equipe){
		return stringMatchs[equipe];
	}
	public static String[] getDomicileParJourneeString(int journee){
		String[] domicileJourneeString = new String[nombreEquipes];
		for(int i = 0; i < nombreEquipes ; i++)
			domicileJourneeString[i] = (stringHome[i][journee]);
		return domicileJourneeString;
	}
	public static String[] getDomicileParEquipeString(int equipe){
		return stringHome[equipe];
	}
	private static void setStringMatch(){
		stringMatchs = new String[nombreEquipes][nombreMatchs];
		for(int i = 0; i < nombreEquipes; i++)
			for(int j = 0; j < nombreMatchs; j++)
				stringMatchs[i][j] = listeEquipes.get(matchs[i][j]).getName();
	}
	private static void setStringHome(){
		stringHome = new String[nombreEquipes][nombreMatchs];
		for(int i = 0; i < nombreEquipes; i++)
			for(int j = 0; j < nombreMatchs; j++)
				stringHome[i][j] = home[i][j] == 0? "exterieur":"domicile";
				
	}
	public static String[] getListeAllEquipes(){
		String[] listeAllEquipes = new String[Solution.getNombreEquipes()];
		for(int i = 0 ; i < Solution.getNombreEquipes() ; i++)
			listeAllEquipes[i] = Solution.getListeEquipes().get(i).getName();
		return listeAllEquipes;
	}
	public static int[][] getMatchs() {
		return matchs;
	}
	public static void setMatchs(int[][] matchs) {
		Solution.solution.matchs = matchs;
	}
	public static int[][] getHome() {
		return home;
	}
	public static void setHome(int[][] home) {
		Solution.solution.home = home;
	}
	public static int getNombreEquipes() {
		return nombreEquipes;
	}
	public static void setNombreEquipes(int nombreEquipes) {
		Solution.solution.nombreEquipes = nombreEquipes;
	}
	public static int getNombreMatchs() {
		return nombreMatchs;
	}
	public static void setNombreMatchs(int nombreMatchs) {
		Solution.solution.nombreMatchs = nombreMatchs;
	}
	public static String[][] getStringMatchs() {
		return stringMatchs;
	}
	public static void setStringMatchs(String[][] stringMatchs) {
		Solution.stringMatchs = stringMatchs;
	}
	public static String[][] getStringHome() {
		return stringHome;
	}
	public static void setStringHome(String[][] stringHome) {
		Solution.solution.stringHome = stringHome;
	}
	public static ListeEquipes getListeEquipes() {
		return listeEquipes;
	}
	public static void setListeEquipes(ListeEquipes listeEquipes) {
		Solution.solution.listeEquipes = listeEquipes;
		Solution.solution.setStringMatch();
		Solution.solution.setStringHome();


	}
	public static int getNbBacktracks() {
		// TODO Auto-generated method stub
		return nbBacktracks;
	}
	public static int getNbBreaks(){
		return nbBreaks;
	}
	public static double getTempsRecherche() {
		// TODO Auto-generated method stub
		return tempsRecherche;
	}
	
	public static void setNbBacktracks(int nbBacktracks) {
		Solution.nbBacktracks = nbBacktracks;
	}

	public static void setNbBreaks(int nbBreaks) {
		Solution.nbBreaks = nbBreaks;
	}

	public static void setTempsRecherche(double tempsRecherche) {
		Solution.tempsRecherche = tempsRecherche;
	}

	public static Solution getInstance(){
		
		return Solution.solution;
	}
	

}
